The field of the present invention pertains to the system architecture of a computer system. More particularly, the present invention relates to the field of providing and enabling a system architecture that is dynamic and scaleable.
Conventional electronic devices, such as Personal Computers (PCs), Personal Digital Assistants (PDAs) and other electronic devices, have the capability of performing multiple functions. These multiple functions can include signal processing, digital filtering, or running multiple application programs to provide video, audio, or other data output. However, conventional electronic devices have severe limitations in operating and instantiating functionality in the system architecture. Consequently, a need arises for a method and apparatus to overcome the limitations of the conventional methods used in the conventional electronic devices.
Referring to prior art FIG. 1, a block diagram of a conventional expansion card adding functionality to a conventional personal computer is shown. Diagram 100 shows a functional expansion card 104 providing a predetermined and static function 106 as input to the PC 102. For example, expansion card 104 can be a Sound Blaster(trademark) card that adds functionality to a PC sound system with digital filtering, digital sound effects, etc.
The sound card typically provides a combination of hardware and software to accomplish new functions, e.g., stereo sound with echo effect, that complement or replace functions available on the host computer. Unfortunately, a sound card may not operate on every system. Thus for example, a conventional PC may have existing functions, e.g., in hardware and software, that do not provide the appropriate data to the new expansion card. Similarly, the conventional PC may not have suitable functions to accept the data provided by the sound card. This is why a conventional expansion card is typically programmed for, and listed as operating on, only predetermined systems with rigidly defined functions. If the system accepting the expansion card has a minor deviation from the aforementioned functional requirements, then the expansion card may result in system conflicts and ultimately, the inability to operate the computer system. With these rigid and inflexible paradigms, conventional methods and apparatus for expanding the functionality of a computer can be a frustrating and counterproductive experience. Thus a need arises for a method of accommodating changes in functionality to a computer system that overcome the limitations of the predetermined system requirements and the failure modes associated with conventional functional expansion cards.
Besides the limitations of predetermined systems and potential conflicts, a conventional expansion card also has installation limitations. That is, a conventional expansion card is not suitable for dynamic installation and operation in the PC or for dynamically removal from, and continued operation of, the PC. In particular, the expansion card cannot be installed and uninstalled xe2x80x9chotxe2x80x9d, e.g., while the PC is operating. Rather, the PC is typically shut down, the card installed, the software installed for the appropriate drivers and instructions, the PC rebooted, and only then the expansion card is operable. Naturally, this conventional methodology is inconvenient in terms of time and effort. Consequently, a need arises for an apparatus and method that overcomes the installation limitations of the conventional expansion card.
The present invention provides a method and apparatus for providing and enabling a computer system architecture that is dynamic and scaleable. By doing so, the present invention overcomes the limitations of the conventional rigid and static system architectures in the conventional electronic devices. The present invention also overcomes the limitations of the predetermined system requirements and the failure modes associated with conventional functional expansion cards. Finally, the present invention overcomes the installation limitations of the conventional expansion card.
In one embodiment of the present invention provides a computer system having a processor, a computer readable memory, and an adapter for receiving a module that will add functionality to the computer system. The processor is coupled to the computer readable memory and to the adapter. A method of providing a dynamic and scaleable system architecture is implemented on the computer system by storing program instructions on memory and executing them via the processor in conjunction with other components of the computer system. The method comprises several steps, starting with a first step of detecting the availability of a new function. Next, an input interface specification and an output interface specification for the new function is received by the computer system. In the next step, it is determined whether a first available function has an output interface specification that is compatible with the input interface specification for the new function, and whether a second available function has an input interface specification that is compatible with the output interface specification for the new function. The new function is then selectively enabled if the interface specifications are compatible.
As an example, a new module having a processor and a memory, coupled to each other, is dynamically installed into an adapter portion of a computer system, e.g., while the computer system is operating. The new module has program code and processor capabilities to perform high-level audio processing including functions such as surround sound and echo effects. These new functions can replace the existing low-level audio processing functions that may have previously existed on the computer system. The new module also has input and output interface specifications which supply the type and format of data that can be input and output from the function. A dynamic architecture engine, existing as code in memory of the computer system and executed on the processor of the computer system, receives the input and output interface specifications from the new module, and determines if existing functions on the computer system have complementary inputs and output interface specifications.
In this example, the input and output interface specifications from the new module satiate industry standard formats, and are compatible with the other audio functions provided by the computer system. Consequently, the new module can be dynamically instantiated while the system is running with seamless performance to the user. A complementary example arises when the new module is dynamically removed from the computer system. Thus, the present invention provides a scaleable architecture for the computer system by providing more or less functions that can be implemented in a dynamic fashion.
These and other advantages of the present invention will become clear to those of ordinary skill in the art after having read the following detailed description of the preferred embodiments which are described herein.